package com.wgy.day33其他增强流.转换流;

import java.io.FileReader;
import java.io.IOException;

/**
 * Created by pc on 2020/12/7 22:03
 * Description: LearningJava
 */
/*
编码: 按照某种规则将字符存储到计算机中   字符(能看懂的)-->字节(看不懂的)
解码:将存储在计算机中的二进制数按照某种规则解析出来  字节(看不懂的)-->字符(能看懂的)

字符编码:就是一套自然语言的字符与二进制数之间的对应规则.
       编码表:生活中的文字和计算机中的二进制的对应规则
字符集:也叫编码表,是一个系统支持的所有字符的集合,包括个国家文字,标点符号,图形符号,数字等

常见的字符集有:ASCII字符集,GBK字符集,Unicode字符集等
ASCII字符集:基本的ASCII字符集使用7位表示一个字符,共128字符.ASCII的扩展字符集使用8位表示一个字符,共256字符,方便支持欧洲常用字符
GBK字符集  :最常用的中文码表,使用2个字节表示一个中文字符
Unicode字符集:最多使用4个字节来表达一个字符,有三种编码方案UTF-8,UTF-16和UTF-32.最常用的是UTF-8
UTF-8:编码规则:1.128个US-ASCII字符,只需一个字节编码
              2.拉丁文等字符,需要2个字节编码
              3.大部分常用字(包含中文),使用3个字节编码
              4,其他极少使用的Unicode辅助字符,使用4个字节编码

编码引出的问题:在IDEA中,使用FileReader读取项目文本文件,由于IDEA的设置,都是默认的UTF-8编码,所以没有任何问题
但是,当读取Windows系统中创建的文本文件时,由于Windows系统默认的是GBK编码,就会出现乱码


*/
public class Demo01 {
    public static void main(String[] args) throws IOException {
        show02();

    }
    public static void show01() throws IOException {
        FileReader fr =new FileReader("D:\\小云\\abc\\我是GBK格式的文本.txt");
        int len=0;
        while((len=fr.read())!=-1){
            System.out.println((char) len);
        }
        fr.close();
    }
    public static void show02() throws IOException {
        FileReader fr =new FileReader("D:\\小云\\abc\\我是UTF8格式的文本.txt");
        int len=0;
        while((len=fr.read())!=-1){
            System.out.println((char) len);
        }
        fr.close();
    }

}
